클로드 코드 완벽 가이드 — 21장 배포하기 딥다이브 학습 노트
출처: 클로드 코드 완벽 가이드 (코드팩토리 최지호) | 참고: https://github.com/codefactory-co
21장에서 다루는 내용
- 배포의 개념 — 개발한 서비스를 사용자가 실제로 접근할 수 있도록 서버나 클라우드에 올리는 과정
- Vercel 설정하기 — Vercel 회원가입, GitHub 연동, 프로젝트 임포트
- Vercel 배포하기 — Next.js 프로젝트를 Vercel에 배포하고 환경변수 설정, 재배포까지
전체 흐름도
[테스트 완료된 프로젝트]
|
v
+-------------------+ +------------------------+ +---------------------+
| 01 Vercel 가입 |---->| 02 GitHub 레포 임포트 |---->| 03 프레임워크 확인 |
| vercel.com/signup | | Import Git Repository | | Next.js 자동 인식 |
| Hobby 플랜 선택 | | 프로젝트 선택 + Import | | Root Directory: ./ |
+-------------------+ +------------------------+ +---------------------+
|
v
+-------------------+ +------------------------+ +---------------------+
| 06 환경변수 설정 |<----| 05 빌드 완료 |<----| 04 Deploy 실행 |
| Settings → | | Continue to Dashboard | | 빌드 로그 확인 |
| Environment Vars | | 실패 시 Logs 탭 확인 | | Deploying... 표시 |
| .env 값 입력+Save | +------------------------+ +---------------------+
+-------------------+
|
v
+-------------------+ +------------------------+
| 07 Redeploy |---->| 08~10 사이트 확인 |
| 환경변수 반영 위해 | | Overview → Visit |
| 재배포 실행 | | 모든 기능 정상 작동 |
+-------------------+ +------------------------+
선수 지식 체크리스트
- [ ] 20장: 테스트(Playwright) — 배포 전 테스트 통과 필수
- [ ] GitHub 기본 사용법 — 레포지토리 생성, 푸시, 브랜치 개념
- [ ] 환경변수(.env) 개념 — API 키 등 민감 정보 관리 방법
- [ ] Next.js 프로젝트 기본 구조 — Supabase 연동 경험
핵심 키워드
| 키워드 | 의미 |
|---|---|
| 배포(Deployment) | 개발한 서비스를 사용자가 실제로 사용할 수 있게 서버나 클라우드에 올리는 과정 |
| Vercel | Next.js를 만든 동명의 회사가 운영하는 배포 플랫폼. GitHub 연동으로 자동 배포 지원 |
| Hobby 플랜 | Vercel의 무료 티어. 개인 프로젝트 초반에 적합하며 관대한 무료 사용량 제공 |
| Import | Vercel에서 GitHub 레포지토리를 가져와 프로젝트를 생성하는 과정 |
| Framework Preset | Vercel이 자동으로 인식하는 프레임워크 설정 (Next.js, React 등) |
| Environment Variables | 서버에서 사용하는 환경변수 (API 키, DB URL 등). Vercel Settings에서 별도 입력 필요 |
| Redeploy | 환경변수 변경 등 설정 수정 후 변경사항을 반영하기 위해 다시 배포하는 것 |
| Build Logs | 빌드 과정의 상세 로그. 배포 실패 시 에러 원인을 확인하는 핵심 도구 |
21-1 배포란 무엇인가
한 줄 요약
배포란 개발한 서비스를 실제 사용자가 접근할 수 있도록 서버나 클라우드에 올리는 과정이며, 보안/성능/오류 대응을 꼼꼼히 챙겨야 한다.
쉬운 설명 (비유)
배포 = 요리를 완성한 뒤 손님에게 서빙하는 것
요리(개발) → 맛 검증(테스트) → 서빙(배포)
아무리 맛있는 요리도 서빙하지 않으면 손님은 먹을 수 없다.
서빙할 때도 온도, 위생, 그릇 상태를 확인해야 하듯이
배포할 때도 보안, 성능, 오류 대응을 챙겨야 한다.
실무 예제
배포 전 체크리스트:
─────────────────────────────────────────
✅ 보안 설정 → API 키가 코드에 하드코딩 되어 있지 않은가?
.env 파일이 .gitignore에 포함되어 있는가?
✅ 성능 최적화 → 이미지 최적화, 불필요한 패키지 제거
✅ 오류 대응 → 에러 페이지(404, 500) 준비
로그 모니터링 도구 연동
✅ 테스트 통과 → 20장에서 작성한 Playwright 테스트 전부 통과
❌ 흔한 실수:
- .env 파일을 GitHub에 올려버림 → API 키 노출
- 환경변수를 Vercel에 등록하지 않음 → 500 에러
- 테스트 없이 바로 배포 → 사용자에게 버그 노출
핵심 체크포인트
- 배포 = 개발한 서비스를 사용자가 실제로 사용할 수 있게 올리는 과정
- 단순히 올리는 것이 아니라 보안, 성능, 오류 대응까지 챙겨야 함
- 데이터베이스(Supabase)는 이미 클라우드에 있으므로 그대로 사용
- 웹사이트 배포만 Vercel로 진행
21-2 Vercel 설정하기
한 줄 요약
Vercel은 Next.js를 만든 회사의 배포 플랫폼으로, GitHub 연동과 무료 Hobby 플랜으로 쉽게 프로젝트를 배포할 수 있다.
쉬운 설명 (비유)
Vercel = 요리를 맡기면 자동으로 서빙까지 해주는 식당 매니저
GitHub에 코드를 올리면(요리 완성) → Vercel이 자동으로 빌드하고(포장)
→ 전 세계 사용자에게 서빙(배포)해 준다.
왜 Vercel인가?
- Next.js를 만든 회사 → Next.js와 궁합이 최고
- 무료 Hobby 플랜 → 돈 없어도 시작 가능
- GitHub 연동 → 코드 푸시하면 자동 배포
실무 예제: Vercel 가입 및 프로젝트 생성
Step 1: 회원가입
─────────────────────────────────────────
1. vercel.com/signup 접속
2. Plan Type → "I'm working on personal projects" (Hobby) 선택
3. 이름 입력 → Continue
4. 소셜 로그인 (GitHub 추천) 또는 이메일 가입
Step 2: GitHub 레포지토리 임포트
─────────────────────────────────────────
1. "Import Git Repository" 화면에서 프로젝트 검색
2. 원하는 레포지토리 옆의 [Import] 버튼 클릭
Step 3: 프로젝트 설정 확인
─────────────────────────────────────────
┌─────────────────────────────────────┐
│ New Project │
│ │
│ Vercel Team: Code Factory Hobby │
│ Project Name: k-nomad │
│ │
│ Framework Preset: Next.js ✅ │ ← 보통 자동 인식
│ Root Directory: ./ │
│ │
│ > Build and Output Settings │
│ > Environment Variables │ ← 나중에 설정 가능
│ │
│ [Deploy] │
└─────────────────────────────────────┘
❌ 주의: 프레임워크가 자동 인식되지 않으면 직접 "Next.js" 선택
✅ 팁: Environment Variables는 첫 배포 후에 설정해도 됨
핵심 체크포인트
- Vercel은 Next.js를 만든 회사의 배포 플랫폼으로, Next.js 호환이 매우 좋음
- Hobby 플랜(무료)으로 개인 프로젝트를 충분히 운영 가능
- GitHub/Google/GitLab/Bitbucket 소셜 로그인 지원
- Import Git Repository로 GitHub 레포를 연결하면 자동 배포 환경 구축
- Framework Preset은 보통 Next.js가 자동 인식됨
21-3 Vercel 배포하기
한 줄 요약
Deploy 버튼 클릭으로 빌드를 실행하고, 환경변수 설정 후 Redeploy하면 실제 서비스가 완성된다.
쉬운 설명 (비유)
배포 과정 = 택배 발송과 비슷
1. [Deploy] 클릭 = 택배 접수
→ "Deploying..." 으로 바뀌며 포장(빌드) 시작
2. 빌드 로그 확인 = 택배 추적
→ Build Logs에서 진행 상황 확인
→ 빨간 에러가 보이면 배달 실패!
3. 환경변수 설정 = 수신인 주소 입력
→ 주소(환경변수) 없으면 택배(서비스)가 도착 못 함
→ .env 파일의 KEY=VALUE를 Vercel에 등록
4. Redeploy = 주소 수정 후 재발송
→ 환경변수 변경 시 반드시 재배포 필요
실무 예제: 배포 전체 흐름
Step 4: Deploy 실행
─────────────────────────────────────────
[Deploy] 버튼 클릭 → "Deploying..." 으로 변경
→ Build Logs 실시간 확인 가능
Build Logs:
Progress: resolved 412, reused 0, downloaded... 11s
→ 의존성 설치, 빌드, 최적화 순서로 진행
Step 5: 빌드 결과 확인
─────────────────────────────────────────
✅ 성공 → [Continue to Dashboard] 버튼 클릭
❌ 실패 → Dashboard의 [Logs] 탭에서 에러 확인
빨간색 에러 로그를 클로드 코드에 복사+붙여넣기로 수정
Step 6: 환경변수 설정
─────────────────────────────────────────
Settings → Environment Variables 이동
┌──────────────────────────────────────────────┐
│ Key Value │
│ NEXT_PUBLIC_SUPABASE_URL https://xxx... │
│ NEXT_PUBLIC_SUPABASE_ANON_KEY eyJhb... │
└──────────────────────────────────────────────┘
- .env 또는 .env.local의 모든 키=값 쌍을 입력
- [Save] 버튼으로 저장
- Import .env 기능으로 한 번에 임포트도 가능
Step 7: Redeploy (재배포)
─────────────────────────────────────────
[Save] 후 화면 아래 [Redeploy] 스낵바 표시
→ [Redeploy] 클릭 → 대화창에서 다시 [Redeploy] 확인
만약 [Redeploy] 버튼이 사라졌다면:
Deployments → ··· → Create Deployment
→ main 브랜치 선택 → [Create Deployment] 클릭
실무 예제: 배포 후 확인 및 트러블슈팅
Step 9: 사이트 방문
─────────────────────────────────────────
Overview 탭 → [Visit] 버튼 클릭
→ 배포된 URL: 프로젝트명.vercel.app
Step 10: 기능 확인
─────────────────────────────────────────
✅ 모든 페이지 정상 로딩
✅ 데이터베이스(Supabase) 연동 확인
✅ API 호출 정상 작동
✅ 반응형 디자인 확인
흔한 에러와 해결법:
─────────────────────────────────────────
| 증상 | 원인 | 해결 |
|-----------------------------|-----------------------|----------------------------|
| 500 Internal Server Error | 환경변수 미등록 | Settings → Env Vars 확인 |
| "Your project's URL and | Supabase URL/Key 오류 | 환경변수 값 재확인 |
| Key" 에러 | | |
| 빌드 실패 | 코드 에러/의존성 문제 | Logs 탭 → 클로드 코드 수정 |
| 페이지 로딩 안 됨 | 라우팅 설정 오류 | next.config.js 확인 |
핵심 체크포인트
- [Deploy] 클릭 → 빌드 시작 → Build Logs로 진행 상황 확인
- 빌드 실패 시 Logs 탭에서 빨간 에러 확인 → 클로드 코드에 복붙하여 수정
- 환경변수는 Settings → Environment Variables에서 .env 파일의 모든 값을 입력
- 환경변수 변경 후 반드시 Redeploy(재배포) 필요
- Redeploy 시간 초과 시 Deployments → Create Deployment로 수동 배포
- 배포 완료 후 Overview → Visit으로 실제 사이트 확인
연습문제 풀이
Q1: 배포(Deployment)를 가장 올바르게 설명한 것은?
A: 개발한 서비스를 사용자가 실제로 사용할 수 있게 서버나 클라우드에 올리는 과정이다. 단순히 코드를 올리는 것이 아니라 보안 설정, 성능 최적화, 오류 대응까지 포함한다.
Q2: Vercel에서 환경변수를 설정한 뒤 반드시 해야 하는 작업은?
A: Redeploy(재배포)를 해야 한다. 환경변수를 저장만 하면 기존 배포에는 반영되지 않는다. [Save] 후 나타나는 [Redeploy] 스낵바를 클릭하거나, Deployments → Create Deployment로 재배포해야 변경사항이 적용된다.
Q3: Vercel 배포가 실패했을 때 에러 원인을 확인하는 방법은?
A: 대시보드의 [Logs] 탭으로 이동하면 빨간색으로 표시된 에러 로그를 확인할 수 있다. 에러 메시지를 복사하여 클로드 코드에 붙여넣기하면 원인 분석과 수정 방법을 안내받을 수 있다.
Q4: Vercel의 Hobby 플랜을 선택하는 것이 적합한 경우와 부적합한 경우는?
A: 적합한 경우: 개인 프로젝트, 학습용, 프로토타입, 포트폴리오 사이트 등 비상업적 목적. 부적합한 경우: 상업적 프로젝트는 Pro 플랜이 필요하다. Hobby 플랜은 관대한 무료 티어를 제공하므로 초반에는 적극 활용하는 것이 좋다.
부록 A: 용어 사전
| 용어 | 영문 | 의미 |
|---|---|---|
| 배포 | Deployment | 개발한 서비스를 사용자가 실제로 접근할 수 있도록 서버/클라우드에 올리는 과정 |
| Vercel | Vercel | Next.js를 만든 회사의 배포 플랫폼. GitHub 연동으로 자동 배포 지원 |
| 빌드 | Build | 소스 코드를 실제 서비스 가능한 형태로 컴파일/번들링하는 과정 |
| 환경변수 | Environment Variables | API 키, DB URL 등 서버에서 사용하는 설정값. 코드에 직접 넣지 않고 별도로 관리 |
| 재배포 | Redeploy | 설정 변경 후 변경사항을 반영하기 위해 다시 배포하는 것 |
| Hobby 플랜 | Hobby Plan | Vercel의 무료 티어. 개인 프로젝트에 적합 |
| Import | Import | Vercel에서 GitHub 레포지토리를 가져와 프로젝트를 생성하는 과정 |
| Framework Preset | Framework Preset | Vercel이 자동으로 인식하는 프레임워크 설정 (빌드 명령어, 출력 디렉터리 등 자동 구성) |
| Build Logs | Build Logs | 빌드 과정의 상세 로그. 에러 원인 파악의 핵심 도구 |
| 대시보드 | Dashboard | Vercel에서 프로젝트 상태, 배포 이력, 설정을 관리하는 메인 화면 |
| Supabase | Supabase | 오픈소스 Firebase 대안. PostgreSQL 기반 클라우드 데이터베이스 서비스 |
| .env | .env | 환경변수를 저장하는 파일. .gitignore에 포함하여 GitHub에 올리지 않도록 관리 |
부록 B: 핵심 비교표
| 항목 | 로컬 개발 환경 | Vercel 배포 환경 |
|---|---|---|
| 접근 범위 | 내 컴퓨터에서만 접근 | 전 세계 어디서나 URL로 접근 |
| 환경변수 | .env / .env.local 파일 | Vercel Settings → Environment Variables |
| 서버 실행 | npm run dev (수동) | Vercel이 자동 관리 (서버리스) |
| DB 연결 | Supabase 클라우드 | 동일 (Supabase 클라우드) |
| URL | localhost:3000 | 프로젝트명.vercel.app |
| 자동 배포 | 없음 (수동 실행) | GitHub 푸시 시 자동 배포 |
| SSL/HTTPS | 없음 | 자동 적용 |
| 비용 | 무료 | Hobby 무료 / Pro 유료 |
| 항목 | 첫 배포(Deploy) | 재배포(Redeploy) |
|---|---|---|
| 트리거 | [Deploy] 버튼 클릭 | 환경변수 변경 후 [Redeploy] 또는 Git 푸시 |
| 목적 | 최초 서비스 공개 | 설정 변경 반영 또는 코드 업데이트 |
| 환경변수 | 나중에 설정 가능 | 변경 시 반드시 재배포 필요 |
| 방법 | New Project → Deploy | Redeploy 스낵바 또는 Deployments → Create Deployment |
부록 C: 추천 참고 자료 & 링크
| 자료 | 설명 |
|---|---|
| https://vercel.com/docs | Vercel 공식 문서 — 배포, 설정, 도메인 관리 등 |
| https://vercel.com/signup | Vercel 회원가입 페이지 |
| https://nextjs.org/docs/deployment | Next.js 공식 배포 가이드 |
| https://supabase.com/docs | Supabase 공식 문서 — 데이터베이스 연동 참조 |
| https://github.com/codefactory-co | 이 책의 저자 GitHub — 예제 프로젝트(k-nomad) 소스 코드 |
클릭하거나 Space를 눌러 뒤집기